package 二叉树;

public class NC72二叉树的镜像 {

    /**
     * 操作给定的二叉树，将其变换为源二叉树的镜像。
     * 比如：    源二叉树
     *             8
     *            /  \
     *           6   10
     *          / \  / \
     *         5  7 9 11
     *        /
     *       2
     *         镜像二叉树
     *             8
     *            /  \
     *           10   6
     *          / \  / \
     *         11 9 7  5
     *                  \
     *                   2
     */

    public TreeNode Mirror (TreeNode pRoot) {
        if(pRoot==null){
            return null;
        }
        TreeNode temp=pRoot.right;
        pRoot.right=Mirror(pRoot.left);
        pRoot.left=Mirror(temp);
        return pRoot;
    }

    public static void main(String[] args) {
        TreeNode nodeByArr = TreeNode.getNodeByArr(new Integer[]{1, 2, 3, 4, 5, 6, 7, 8});
        NC72二叉树的镜像 n=new NC72二叉树的镜像();
        nodeByArr.printNode();
        System.out.println("----");
        TreeNode mirrorTree = n.Mirror(nodeByArr);
        mirrorTree.printNode();
    }

}
